home *** CD-ROM | disk | FTP | other *** search
- #! /usr/local/bin/python
-
- # A rather specialized script to make sure that a symbolic link named
- # RCS exists pointing to a real RCS directory in a parallel tree
- # referenced as RCStree in an ancestor directory.
- # (I use this because I like my RCS files to reside on a physically
- # different machine).
-
- import os
-
- def main():
- rcstree = 'RCStree'
- rcs = 'RCS'
- if os.path.islink(rcs):
- print `rcs`, 'is a symlink to', `os.readlink(rcs)`
- return
- if os.path.isdir(rcs):
- print `rcs`, 'is an ordinary directory'
- return
- if os.path.exists(rcs):
- print `rcs`, 'is a file?!?!'
- return
- #
- p = os.getcwd()
- up = ''
- down = ''
- # Invariants:
- # (1) join(p, down) is the current directory
- # (2) up is the same directory as p
- # Ergo:
- # (3) join(up, down) is the current directory
- #print 'p =', `p`
- while not os.path.isdir(os.path.join(p, rcstree)):
- head, tail = os.path.split(p)
- #print 'head =', `head`, '; tail =', `tail`
- if not tail:
- print 'Sorry, no ancestor dir contains', `rcstree`
- return
- p = head
- up = os.path.join(os.pardir, up)
- down = os.path.join(tail, down)
- #print 'p =', `p`, '; up =', `up`, '; down =', `down`
- there = os.path.join(up, rcstree)
- there = os.path.join(there, down)
- there = os.path.join(there, rcs)
- if os.path.isdir(there):
- print `there`, 'already exists'
- else:
- print 'making', `there`
- makedirs(there)
- print 'making symlink', `rcs`, '->', `there`
- os.symlink(there, rcs)
-
- def makedirs(p):
- if not os.path.isdir(p):
- head, tail = os.path.split(p)
- makedirs(head)
- os.mkdir(p, 0777)
-
- main()
-